/*
 * BaseManageBean
 *
 * Creado el 24/04/2009, 12:16:35 PM
 */
package com.unicon.autoservicio.view.bean;

import com.icesoft.faces.context.effects.Effect;
import com.icesoft.faces.context.effects.Highlight;
import com.unicon.autoservicio.bean.ObraBeanViewBean;
import com.unicon.autoservicio.enumeradores.ETipoDocumento;
import com.unicon.autoservicio.enumeradores.ETipoMuestreo;
import com.unicon.autoservicio.enumeradores.ETipoPedidoCS;
import com.unicon.autoservicio.util.Cache;
import com.unicon.autoservicio.util.FacesUtils;
import java.util.ArrayList;
import javax.faces.model.SelectItem;
import com.unicon.view.ManageBeanNames;

import java.util.TimeZone;
import javax.faces.context.FacesContext;
import org.apache.log4j.Logger;

import com.unicon.autoservicio.enumeradores.ETipoPedidoCS;  /* JMENDOZA | 20140108 | Proy. 817 */ 
/**
 *
 * @author rjrodriguez
 */
public class BaseManageBean {

    private static final long serialVersionUID = 1;
    private SelectItem[] lstObrasItems;
    private SelectItem[] lstTipoResultadoItems;
    private SelectItem[] lstAcuerdosItems;
    private SelectItem[] lstIndicadorMuestreoItems;
    private boolean popupConsultarDetallePedidoLeyenda;
    private String selectedObra;
    private String selectedAcuerdo;
    private String selectedIndicadorMuestreo;
    protected final Logger logger = Logger.getLogger(BaseManageBean.class.getName());
    // effect that shows a value binding chance on there server
    protected Effect valueChangeEffect;
    private boolean allChecks;
    private boolean selectedCheck;
    /* JMENDOZA | 20140108 | Proy. 817: Se agrega listado de tipo de pedidos */ 
    /* 20140108-01 | INICIO */
    private SelectItem[] lstTipoPedidoItems; 
    /* 20140108-01 | FIN */

    public BaseManageBean() {
        valueChangeEffect = new Highlight("#fda505");
        valueChangeEffect.setFired(true);
        popupConsultarDetallePedidoLeyenda = false;


        lstObrasItems = new SelectItem[0];
        lstAcuerdosItems = new SelectItem[0];
    }

    public boolean isPostBack() {
        FacesContext context = FacesContext.getCurrentInstance();
        return context.getRenderKit().getResponseStateManager().isPostback(context);
    }

    public void closePopupLeyenda() {
        setPopupConsultarDetallePedidoLeyenda(false);
    }

    public void openPopupLeyenda() {
        setPopupConsultarDetallePedidoLeyenda(true);
    }

    /**
     * Used to initialize the managed bean.
     */
    protected void init() {
    }

    public Effect getValueChangeEffect() {
        return valueChangeEffect;
    }

    public void setValueChangeEffect(Effect valueChangeEffect) {
        this.valueChangeEffect = valueChangeEffect;
    }

    public TimeZone getTimeZone() {
        return java.util.TimeZone.getDefault();
    }

    protected final UsuarioBean getSessionUser() {
        return FacesUtils.getManagedBean(ManageBeanNames.BEAN_USUARIO, UsuarioBean.class);
    }

    /**
     * @param lstEstadoPrograma the lstEstadoPrograma to set
     */
    public void setLstEstadoProgramaReabastecimiento(SelectItem[] lstEstadoProgramaReabastecimiento) {
        this.setLstEstadoProgramaReabastecimiento(lstEstadoProgramaReabastecimiento);
    }

    protected final ArrayList<AccionBean> getAcciones(String objeto) {
        UsuarioBean usuarioBean = FacesUtils.getManagedBean(
                ManageBeanNames.BEAN_USUARIO, UsuarioBean.class);
        VistaBean vistaBean = new VistaBean();
        vistaBean.setObjeto(objeto);
        return usuarioBean.getVistas().get(usuarioBean.getVistas().indexOf(vistaBean)).getAcciones();
    }

    /**
     * @return the lstObrasItems
     */
    public SelectItem[] getLstObrasItems() {


        UsuarioBean usuarioBean = getSessionUser();
        try {
            AppCacheKey ck = new AppCacheKey("lstObrasItems", usuarioBean);
            lstObrasItems = Cache.get(ck);


            if (lstObrasItems == null || lstObrasItems.length < 2) {
                ArrayList<ObraBeanViewBean> obras;
                obras = usuarioBean.getObras();
                lstObrasItems = new SelectItem[obras.size() + 1];
                SelectItem s = new SelectItem("", "TODOS");
                lstObrasItems[0] = s;
                ObraBeanViewBean obra = null;
                for (int i = 0; i < obras.size(); i++) {
                    obra = obras.get(i);
                    s = new SelectItem(obra.getCodigo(), obra.getDescripcion());
                    lstObrasItems[i + 1] = s;
                }

                Cache.put(ck, lstObrasItems);
            }
        } catch (Exception e) {

            logger.error(e.getMessage(), e);
        }

        return lstObrasItems;
    }

    /**
     * @param lstObrasItems the lstObrasItems to set
     */
    public void setLstObrasItems(SelectItem[] lstObrasItems) {
        this.setLstObrasItems(lstObrasItems);
    }

    /**
     * @return the lstAcuerdosItems
     */
    public SelectItem[] getLstAcuerdosItems() {


        if (lstAcuerdosItems.length == 0) {
            lstAcuerdosItems = new SelectItem[1];
            SelectItem s = new SelectItem("", "TODOS");
            lstAcuerdosItems[0] = s;
        }

        return lstAcuerdosItems;
    }

    /**
     * @param lstAcuerdosItems the lstAcuerdosItems to set
     */
    public void setLstAcuerdosItems(SelectItem[] lstAcuerdosItems) {
        this.lstAcuerdosItems = lstAcuerdosItems;
    }

    /**
     * @return the selectedObra
     */
    public String getSelectedObra() {
        return selectedObra;
    }

    /**
     * @param selectedObra the selectedObra to set
     */
    public void setSelectedObra(String selectedObra) {
        this.selectedObra = selectedObra;
    }

    /**
     * @return the selectedAcuerdo
     */
    public String getSelectedAcuerdo() {
        return selectedAcuerdo;
    }

    /**
     * @param selectedAcuerdo the selectedAcuerdo to set
     */
    public void setSelectedAcuerdo(String selectedAcuerdo) {
        this.selectedAcuerdo = selectedAcuerdo;
    }

    /**
     * @return the lstIndicadorMuestreoItems
     */
    public SelectItem[] getLstIndicadorMuestreoItems() {


        UsuarioBean usuarioBean = getSessionUser();
        AppCacheKey ck = new AppCacheKey("lstIndicadorMuestreoItems", usuarioBean);
        lstIndicadorMuestreoItems = Cache.get(ck);
        if (lstIndicadorMuestreoItems == null) {
            SelectItem[] selectedItems = new SelectItem[3];

            String label = FacesUtils.getMessageResourceString("app.muestreo.todos");
            selectedItems[0] = new SelectItem(ETipoMuestreo.MUESTREO_TODOS.value(), label);

            label = FacesUtils.getMessageResourceString("app.muestreo.si");
            selectedItems[1] = new SelectItem(ETipoMuestreo.MUESTREO_SI.value(), label);

            label = FacesUtils.getMessageResourceString("app.muestreo.no");
            selectedItems[2] = new SelectItem(ETipoMuestreo.MUESTREO_NO.value(), label);


            lstIndicadorMuestreoItems = selectedItems;
            Cache.put(ck, lstIndicadorMuestreoItems);

        }
        return lstIndicadorMuestreoItems;
    }

    /**
     * @param lstIndicadorMuestreoItems the lstIndicadorMuestreoItems to set
     */
    public void setLstIndicadorMuestreoItems(SelectItem[] lstIndicadorMuestreoItems) {
        this.lstIndicadorMuestreoItems = lstIndicadorMuestreoItems;
    }

    /**
     * @return the selectedIndicadorMuestreo
     */
    public String getSelectedIndicadorMuestreo() {
        return selectedIndicadorMuestreo;
    }

    /**
     * @param selectedIndicadorMuestreo the selectedIndicadorMuestreo to set
     */
    public void setSelectedIndicadorMuestreo(String selectedIndicadorMuestreo) {
        this.selectedIndicadorMuestreo = selectedIndicadorMuestreo;
    }

    /**
     * @return the popupConsultarDetallePedidoLeyenda
     */
    public boolean isPopupConsultarDetallePedidoLeyenda() {
        return popupConsultarDetallePedidoLeyenda;
    }

    /**
     * @param popupConsultarDetallePedidoLeyenda the
     * popupConsultarDetallePedidoLeyenda to set
     */
    public void setPopupConsultarDetallePedidoLeyenda(boolean popupConsultarDetallePedidoLeyenda) {
        this.popupConsultarDetallePedidoLeyenda = popupConsultarDetallePedidoLeyenda;
    }

    /**
     * @return the allChecks
     */
    public boolean isAllChecks() {
        return allChecks;
    }

    /**
     * @param allChecks the allChecks to set
     */
    public void setAllChecks(boolean allChecks) {
        this.allChecks = allChecks;
    }

    /**
     * @return the selectedCheck
     */
    public boolean isSelectedCheck() {
        return selectedCheck;
    }

    /**
     * @param selectedCheck the selectedCheck to set
     */
    public void setSelectedCheck(boolean selectedCheck) {
        this.selectedCheck = selectedCheck;
    }

    /**
     * @return the lstTipoDocumentoItems
     */
    public SelectItem[] getLstTipoResultadoItems() {

        UsuarioBean usuarioBean = getSessionUser();
        AppCacheKey ck = new AppCacheKey("lsttipoDocumentoItems", usuarioBean);
        lstTipoResultadoItems = Cache.get(ck);
        if (lstTipoResultadoItems == null) {
            SelectItem[] selectedItems = new SelectItem[4];

            String label = FacesUtils.getMessageResourceString("app.tipoDocumento.todos");
            selectedItems[0] = new SelectItem(ETipoDocumento.DOCUMENTO_TODOS.value(), label);

            label = FacesUtils.getMessageResourceString("app.tipoDocumento.certificado");
            selectedItems[1] = new SelectItem(ETipoDocumento.DOCUMENTO_CERTIFICADO.value(), label);

            label = FacesUtils.getMessageResourceString("app.tipoDocumento.proceso");
            selectedItems[2] = new SelectItem(ETipoDocumento.DOCUMENTO_PROCESO.value(), label);
            
            label = FacesUtils.getMessageResourceString("app.tipoDocumento.comunicado");
            selectedItems[3] = new SelectItem(ETipoDocumento.DOCUMENTO_COMUNICADO.value(), label);





            lstTipoResultadoItems = selectedItems;
            Cache.put(ck, lstTipoResultadoItems);

        }


        return lstTipoResultadoItems;
    }

    /**
     * @param lstTipoDocumentoItems the lstTipoDocumentoItems to set
     */
    public void setLstTipoResultadoItems(SelectItem[] lstTipoResultadoItems) {
        this.lstTipoResultadoItems = lstTipoResultadoItems;
    }
    
    /* JMENDOZA | 20140108 | Proy. 817: Se establece valores get y set a lstIndicadorMuestreoItems */ 
    /* 20140108-02 | INICIO */
    
    /**
     * @return the getLstTipoPedidoItems
     */
     public SelectItem[] getLstTipoPedidoItems() {


        UsuarioBean usuarioBean = getSessionUser();
        AppCacheKey ck = new AppCacheKey("lstTipoPedidoItems", usuarioBean);
        lstTipoPedidoItems = Cache.get(ck);
        if (lstTipoPedidoItems == null) {
            SelectItem[] selectedItems = new SelectItem[3];

            String label = FacesUtils.getMessageResourceString("app.tipoPedido.todos");
            selectedItems[0] = new SelectItem(ETipoPedidoCS.PEDIDOCS_TODOS.value(), label);

            label = FacesUtils.getMessageResourceString("app.tipoPedido.concreto");
            selectedItems[1] = new SelectItem(ETipoPedidoCS.PEDIDOCS_CONCRETO.value(), label);

            label = FacesUtils.getMessageResourceString("app.tipoPedido.concretobomba");
            selectedItems[2] = new SelectItem(ETipoPedidoCS.PEDIDOCS_CONCRETOBOMBS.value(), label);

            lstTipoPedidoItems = selectedItems;
            Cache.put(ck, lstTipoPedidoItems);

        }
        return lstTipoPedidoItems;
    }

    /**
     * @param lstIndicadorMuestreoItems the lstIndicadorMuestreoItems to set
     */
    public void setLstTipoPedidoItems(SelectItem[] lstTipoPedidoItems_) {
        this.lstTipoPedidoItems = lstTipoPedidoItems_;
    }
    
    /* 20140108-02 | FIN */
}
